Swagger注解 |
您所在的位置:网站首页 › springboot html放哪里 › Swagger注解 |
最近遇到一个奇怪的问题,而且可以复现。
项目环境:SpringBoot,Spring标准配置
原先的Maven配置,不区分 dev/pre/prod环境配置, 通过application.yml中的 profile指定 dev pre prod,不同环境打包,改一下这个配置。
这个时候,Swagger注解的配置: @Configuration @EnableSwagger2 @Profile({"dev", "pre"}) class SwaggerConfig { /** * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) //为当前包路径 //.apis(RequestHandlerSelectors.basePackage("com.br.demo.controller")) .paths(PathSelectors.any()) .build(); } /** * 构建 api文档的详细信息函数 */ private ApiInfo apiInfo() { return new ApiInfoBuilder() //页面标题 .title("Swagger2构建RESTful API文档,Demo项目") //创建人 .contact(new Contact("雷哥", "http://22", "wen.lei")) //版本号 .version("1.0") //描述 .description("API 描述") .build(); } }
然后项目结构进行了改造:用的新的,Maven打包后的代码,完全和之前一样。
但是,Swagger能访问到 swagger-ui.html,
UI升级版本的doc.html com.github.xiaoymin swagger-bootstrap-ui 1.8.8主要内容出不来,提示 /swagger-resources/那个目录 404.
百思不得其解。 之前某同事也遇到过这个问题,折腾半天, 最终发现 @EnableSwagger2 public class SpringBootApplication { }这个注解需要放在 Application的上面。 之前是放在 Swagger单独某个Config类的上面。
这个有点奇怪了,暂时没看出根本原因。
之前放在Config上面,一个可能原因是 ,参考网上例子,当时放在上面没问题,实际上 之前这么用也确实没有问题,只是换了种模式 出问题了。 另外一个原因,Swagger相关的代码和注解 配置,集中在一个Config文件里,而不是分散在多个地方。
今天遇到这个问题,让我想起来 @EnableSwagger2 放在SpringBootApplication 上面,也是非常合理的。 @EnableDiscoveryClient @EnableFeignClients(basePackages="com.br.contract") @EnableScheduling @EnableSwagger2@Configuration @SpringBootApplication(scanBasePackages={"com.","com.leige"}) @ServletComponentScanpublic class SpringBootApplication { }
这样一对比,就发现非常合理。 凡是,开始某个模块或某个用法@Enable**注解的,放在 整个项目的入口位置,是非常恰当的。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |